import factory.AbsFactory;

/**
 * 抽象工厂模式
 * 
 * 当我们需要多种类型的工厂时，简单工厂模式已不足以提供架构设计的支持，此时选用抽象工厂，在简单工厂之上再增加一个工厂用于生成不同类型的工厂。
 * 
 * 比如 本次示例中需要设定 color 工厂、shape工厂两种
 * 
 * 示例
 * 
 * 需求：创建不同的Shape、Color对象
 * 1.设定工厂抽象类
 * 2.设定生成【不同类型工厂】的工厂实现类
 * 3.设定生成【不同类型工厂】的生产者（这步开始就是简单工厂模式了）
 * 2.设定不同类型的工厂
 * 3.通过创建不同类型的工厂，创建不同的Shape、Color子类实例
 */
class SimpleMain{
    public static void main(String[] args) {
        
        AbsFactory colorfactory = FactoryProducer.getSimpleFactory("color");
        colorfactory.createColor("red").print();
        colorfactory.createColor("blue").print();

        AbsFactory shapeFactory = FactoryProducer.getSimpleFactory("shape");
        shapeFactory.createShape("circle").draw();
        shapeFactory.createShape("rectangle").draw();
        
    }
}
